package com.ruoyi.util;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author chenchuan2
 * @date 2023-05-11 19:55:56
 * https://blog.csdn.net/weixin_45316851/article/details/105387917
 */
public class DistanceUtil {

    public static BigDecimal calculation(List<BigDecimal> list1, List<BigDecimal> list2) {

        BigDecimal sum = BigDecimal.ZERO;
        BigDecimal v1Len = BigDecimal.ZERO;
        BigDecimal v2Len = BigDecimal.ZERO;
        for (int i = 0; i < list1.size(); i++) {
            sum = sum.add(list1.get(i).multiply(list2.get(i)));
            v1Len = v1Len.add(list1.get(i).multiply(list1.get(i)));
        }

        for (int k = 0; k < list2.size(); k++) {
            v2Len = v2Len.add(list2.get(k).multiply(list2.get(k)));
        }

        double sqrt = Math.sqrt(v1Len.doubleValue()) * Math.sqrt(v2Len.doubleValue());
        return sum.divide(new BigDecimal(sqrt),32,BigDecimal.ROUND_HALF_UP);
    }
}
